
import { ArrowConfigVal, IMDSkillConfigVal } from "../config/SkillConfig";
import ArrowObject from "../module/arrowabout/ArrowObject";
import UnitX from "../entity/UnitX";
import { DmgTypeKey, UnitAttrStruct } from "../types/L_Type";
import L_Run from "../utils/L_Run";
import DmgFormula from "../module/dmgabout/DmgFormula";
import Abs_F_DmgSkillBase from "./Abs_F_DmgSkillBase";


export default abstract class Abs_IMDDmgSkillBase {
 
 
 
     /**
     *  执行伤害类型技能内容
     * @param aux 触发类型
     * @param skillIdStr 技能id
     * @param imdSkillConfigVal 技能配置
     *  
     */
     public abstract execDmgSkill(aux:UnitX,skillIdStr:string,imdSkillConfigVal:IMDSkillConfigVal):void; 

     /**
      * 通用箭矢单位创建函数 
      * @param ux 施法者
      * @param arrowConfig 确保 IMDSkillConfigVal.arrowConfig已经正确配置
      * @returns 
      */
     public createArrowUnit(ux:UnitX,arrowConfig:ArrowConfigVal):any{
          return L_Run.createUnitAtUnitXY(ux.unit,arrowConfig.arrowUnitIdStr,L_Run.getUnitFacing(ux.unit))
     }

     /**
      * 通用箭矢移动函数（为了简化技能时放点的获取，封装了一层）
      * @param arrowObj 箭矢单位
      * @param arrowConfig 确保 IMDSkillConfigVal.arrowConfig已经正确配置
      */
     public arrowMoveToSpellTargetByLine(arrowObj:ArrowObject,arrowConfig:ArrowConfigVal){
          let spellTargetXY=L_Run.getSpellTargetXY()
          arrowObj.angleMoveWithDis(arrowConfig.dis,spellTargetXY.x,spellTargetXY.y,arrowConfig.disPerSecond)
     }

    
}  